package com.project.service;

import com.project.entity.StructuredTemplate;
import dev.langchain4j.service.MemoryId;
import dev.langchain4j.service.SystemMessage;
import dev.langchain4j.service.UserMessage;
import dev.langchain4j.service.V;
import reactor.core.publisher.Flux;

/**
 * @Author: zhoujinchuan
 * @Description: （）
 * @Date: 2025/2/26 9:03
 */
public interface ProductManagerAssistant {

    /**
     * 聊天
     * @param userId 用户 ID  (根据ID隔离记忆)
     * @param message 消息
     * @return
     */
    @SystemMessage("你是一位专业的软件产品经理，只回答与产品文档相关的问题。输出限制：对于其他领域的问题禁止回答，直接返回'抱歉，我只能回答与产品文档相关的问题。'")
    @UserMessage("请回答以下下问题：{{question}}")
    Flux<String> chat(@MemoryId Long userId,@V("question") String message);

    /**
     * 聊天
     * @param userId 用户 ID  (根据ID隔离记忆)
     * @param template
     * @return
     */
    @SystemMessage("你是一位职业资格评价信息服务平台系统的产品经理，只回答功能模块的作用。输出限制：对于其他领域的问题禁止回答，直接返回'抱歉，我只能回答功能模块的作用。'")
    Flux<String> chatFormStructuredPrompt(@MemoryId Long userId,StructuredTemplate template);

}
